<?php
//使用 bindValue 函数，可以直接将表达式的值绑定到占位符上
//$db = new PDO('mysql:host=localhost; dbname=db3', 'root', '12qwas');
//$ps=$db->prepare('select * from students limit ?'); //使用问号占位符
//$ps->bindValue(1,2, PDO::PARAM_INT); //第一个参数就是占位符的索引，从 1 开始
//$ps->execute();//执行语句，这里就不用传递数组参数了
//foreach ($ps as $r){
//    echo "{$r['xh']}\t{$r['name']}\t{$r['age']}\n";
//}

//对于使用命名占位符的预处理语句，应是类似 :name 形式的参数名。
//$db = new PDO('mysql:host=localhost; dbname=db3', 'root', '12qwas');
//$ps=$db->prepare('select * from students limit :offset, :length'); //使用命名占位符，以冒号:开始
//$ps->bindValue(':offset',1,PDO::PARAM_INT); //设置绑定占位符的值及类型
//$ps->bindValue(':length',2,PDO::PARAM_INT);
//$ps->execute();//执行语句，这里就不用传递数组参数了
//foreach ($ps as $r){
//    echo "{$r['xh']}\t{$r['name']}\t{$r['age']}\n";
//}

//将变量绑定到占位符,在execute()被调用的时候才取绑定变量的值
//$db = new PDO('mysql:host=localhost; dbname=db3', 'root', '12qwas');
//$ps=$db->prepare('select * from students limit :offset, :length');
//$ps->bindParam(':offset',$offset,PDO::PARAM_INT);//此变量作为引用被绑定
//$ps->bindParam(':length',$length,PDO::PARAM_INT);
//$offset=$length=1;
//$ps->execute();//只在 PDOStatement::execute()被调用的时候才取绑定变量的值。
//foreach ($ps as $r){
//    echo "{$r['xh']}\t{$r['name']}\t{$r['age']}\n";
//}

//将变量绑定到一个查询结果集中给定的列，可通过列名或从 1 开始的列号进行绑定
$db = new PDO('mysql:host=localhost; dbname=db3', 'root', '12qwas');
$ps=$db->prepare('select * from students limit :offset, :length');
$ps->bindParam(':offset',$offset,PDO::PARAM_INT);//此变量作为引用被绑定
$ps->bindParam(':length',$length,PDO::PARAM_INT);
$offset=$length=1;
$ps->execute();//只在 PDOStatement::execute()被调用的时候才取绑定变量的值。
foreach ($ps as $r){
    echo "{$r['xh']}\t{$r['name']}\t{$r['age']}\n";
}

$ps=$db->prepare('select * from students limit 1,2');
$ps->bindColumn(1,$xh);//通过列号绑定，从 1 开始
$ps->bindColumn(2,$name);
$ps->bindColumn('age', $age, PDO::PARAM_INT);//通过列名绑定
$ps->execute();
foreach ($ps as $row){
    echo "{$xh}\t{$name}\t{$age}\n";//可直接使用绑定到列的变量名
}

